package com.hjj.common.result;

import lombok.Data;

import java.util.HashMap;
import java.util.Map;

/**
 * 统一结果类
 */
@Data
public class R {
	private Integer code;
	private String msg;
	private Map<String,Object> data = new HashMap<>();

	// 构造函数是私有化
	private R(){}

	/**
	 * 返回成功结果
	 * @return
	 */
	public static R ok(){
		R r = new R();
		r.setCode(ResponseEnum.SUCCESS.getCode());
		r.setMsg(ResponseEnum.SUCCESS.getMsg());
		return r;
	}

	/**
	 * 返回失败结果
	 * @return
	 */
	public static R error(){
		R r = new R();
		r.setCode(ResponseEnum.ERROR.getCode());
		r.setMsg(ResponseEnum.ERROR.getMsg());
		return r;
	}

	/**
	 * 动态设置特定枚举
	 * @param responseEnum
	 * @return
	 */
	public static R setResult(ResponseEnum responseEnum){
		R r = new R();
		r.setCode(responseEnum.getCode());
		r.setMsg(responseEnum.getMsg());
		return r;
	}

	public R data(String key, Object value){
		this.data.put(key,value);
		return this;
	}

	public R data(Map<String, Object> map){
		this.setData(map);
		return this;
	}

	/**
	 * 设置特定响应消息,
	 * @param msg
	 * @return
	 */
	public R msg(String msg){
		this.setMsg(msg);
		return this;
	}

	/**
	 * 设置特定响应码,
	 * @param code
	 * @return
	 */
	public R code(Integer code){
		this.setCode(code);
		return this;
	}
}
